NAND flash memories tend to have their threshold voltage distributions broadened and their data retention properties degraded as memory elements are miniaturized. Thus, error checking and correction (ECC) such as a low-density parity check (LDPC) may be used which has a powerful correcting capability. However, ECC such as LDPC requires information referred to as soft values and which is different from values read at a normal read level. Thus, a read operation (soft bit read) is performed at a level different from the normal read level, and the results are used as soft values used for ECC such as LDPC. However, this disadvantageously extends read time.